package com.gosophia.oa.test.functional;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.gosophia.oa.test.CustomSeleneseTestCase;



public class FTDataPermissionRuleManagement extends CustomSeleneseTestCase {

	@Before
	public void setUp() throws Exception {
		super.setUp("http://localhost:8080/");
	}

	@After
	public void tearDown() throws Exception {
		if (selenium != null)
			selenium.close();
		super.tearDown();
	}
	
	public void testListPage() throws Exception {
		// 登录
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=数据权限规则管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-数据权限规则列表", onPage("数据权限列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);
		
		// 验证页面元素
		String[] listPageElementTexts = {
				"资源集名",
				"描述",
				"操作",
				"首页","尾页"
				};
		verifyPresenceOfTexts(listPageElementTexts, onPage("数据权限列表页面"));
	}
	
	
	@Test
	public void testEditPage() throws Exception {
		// 登录
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=数据权限规则管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-数据权限规则列表", onPage("数据权限列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);
		
		//编辑
		selenium.click("link=编辑");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-编辑数据规则权限资源集", onPage("资源集编辑页面"));

		// 验证页面元素
		String[] editPageElementTexts = {
				"编辑资源集",
				"资源集名",
				"描述","最大64个字符",
				"规则匹配策略",
				"规则",
				"规则顺序",
				"规则名",
				"状态",
				"操作"
				};
		verifyPresenceOfTexts(editPageElementTexts, onPage("资源集编辑页面"));
	}
	
	@Test
	public void testAddRulePage() throws Exception {
		// 登录
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=数据权限规则管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-数据权限规则列表", onPage("数据权限列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);
		
		//进入编辑资源集页面
		selenium.click("link=编辑");
		selenium.waitForPageToLoad("10000");

		//进入新增规则页面
		selenium.click("createEvent");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-新增权限规则", onPage("新增权限规则页面"));

		// 验证页面元素
		String[] addRulePageElementTexts = {
				"新增规则",
				"资源集名称", "行政投诉",
				"规则名", "最长32个字符（待定）",
				"规则顺序", "数字",
				"状态","启用","禁用",
				"if",
				"then"
				};
		verifyPresenceOfTexts(addRulePageElementTexts, onPage("新增权限规则页面"));
	}

	@Test
	public void testEditRulePage() throws Exception {
		// 登录
		selenium.open("/OA/");
		selenium.type("j_username", "admin");
		selenium.type("j_password", "admin");
		selenium.click("loginBtn");
		selenium.waitForPageToLoad("10000");

		// 进入列表页面
		selenium.click("link=数据权限规则管理");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-数据权限规则列表", onPage("数据权限列表页面"));
		// 等待列表刷新完成
		waitForAppearanceOfElement("//div[@id='dataTable']/table", 10000);
		
		//进入编辑资源集页面
		selenium.click("link=编辑");
		selenium.waitForPageToLoad("10000");

		//进入编辑规则页面
		selenium.click("link=编辑");
		selenium.waitForPageToLoad("10000");
		assertPageTitle("北京市电子行政监察平台-编辑权限规则", onPage("编辑权限规则页面"));

		// 验证页面元素
		String[] editRulePageElementTexts = {
				"编辑规则",
				"资源集名称", "行政投诉",
				"规则名", "最长32个字符（待定）",
				"规则顺序", "数字",
				"状态","启用","禁用",
				"if",
				"then"
				};
		verifyPresenceOfTexts(editRulePageElementTexts, onPage("编辑权限规则页面"));
	}

}
